iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
Modern Web

前端三兩事,哪些您必須要知道的事 !系列 第 24

Day 24 - React & TypeScript 分享

  • 分享至 

  • xImage
  •  

摘要

  • 這篇文章的目的是 ?
  • React & TypeScript 分享
  • 連結

這篇文章的目的是 ?

TypeScript是一種由微軟開發的程式語言,它是JavaScript的超集,意味著所有有效的JavaScript代碼也是有效的TypeScript代碼。TypeScript通過引入靜態類型和其他功能,增強了JavaScript的功能。

靜態類型

TypeScript的一個關鍵特點是它引入了靜態類型,這意味著在編譯時會檢查代碼中的類型錯誤,有助於提前發現潛在的問題。

React & TypeScript 分享

為什麼學習TypeScript對於React開發者是有益的 ?

好處

  • 更安全的代碼:靜態類型幫助減少錯誤。
  • 更好的代碼註釋和文檔:TypeScript支持豐富的類型註釋,提供更好的代碼文檔。
  • 更好的IDE支援:主流IDE(如VS Code)提供了對TypeScript的優秀支援。
  • 更易於重構:類型安全幫助進行更容易的重構。
  • 社區支援:TypeScript擁有廣泛的社區和資源。

3. 如何學習 TypeScript

這一部分應該提供一個學習TypeScript的大綱,以及每個大綱的解釋和相關的程式碼示例。

3.1 基本類型

  • 簡介基本類型,如string、number、boolean等。
  • 示範如何聲明和使用這些基本類型。
tsxCopy code
let name: string = "John";
let age: number = 30;
let isStudent: boolean = true;

3.2 介面和類別

  • 解釋如何創建介面和類別。
  • 示範如何使用介面和類別來定義自定義類型。
tsxCopy code
interface Person {
  name: string;
  age: number;
}

class Student implements Person {
  constructor(public name: string, public age: number) {}
}

3.3 函數和型別

  • 說明如何聲明函數和函數的輸入和輸出類型。
  • 示範如何使用型別別名。
tsxCopy code
function add(a: number, b: number): number {
  return a + b;
}

type Point = { x: number; y: number };

4. 在 React 中使用 TypeScript

最後,這一部分應該提供React和TypeScript的整合示例,以幫助讀者開始在React項目中使用TypeScript。

4.1 創建React組件

示範如何創建一個React函數組件,並使用TypeScript定義其屬性。

tsxCopy code
import React from 'react';

interface GreetingProps {
  name: string;
}

const Greeting: React.FC<GreetingProps> = ({ name }) => {
  return <div>Hello, {name}!</div>;
}

4.2 狀態和事件處理

解釋如何在React中使用狀態和事件處理,以及如何在TypeScript中定義它們的類型。

tsxCopy code
import React, { useState } from 'react';

interface CounterProps {
  initialCount: number;
}

const Counter: React.FC<CounterProps> = ({ initialCount }) => {
  const [count, setCount] = useState(initialCount);

  const increment = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
}

5. TypeScript 補充:為什麼不要使用 React.FC?

在TypeScript中,雖然使用 React.FC 是一種常見的做法,但它並不是推薦的方式。以下是一些原因解釋為什麼不建議使用 React.FC

5.1 不必要的類型嵌套

當你使用 React.FC 時,它實際上是一個包含兩個泛型參數的類型,即 React.FC<Props>,其中 Props 是你組件的屬性類型。然而,這個嵌套的類型可以使代碼變得更加複雜,對於初學者來說可能會令人困惑。

5.2 不適用於所有情況

React.FC 適用於函數組件,但當你需要使用 React.FC 嵌套其他泛型時,它可能會變得更加困難。例如,當你需要使用**React.FC**來包裝其他高階組件時,代碼可能會變得複雜。

5.3 難以認識組件的屬性

使用 React.FC 會導致難以確定組件的屬性。當你想要查看組件的屬性時,你需要深入研究代碼才能找到它們。這不利於代碼的可讀性和維護性。

不使用 React.FC 的替代方法

替代方法是直接定義一個函數組件,而不使用 React.FC。以下是一個示例:

tsxCopy code
import React from 'react';

interface GreetingProps {
  name: string;
}

function Greeting({ name }: GreetingProps) {
  return <div>Hello, {name}!</div>;
}

export default Greeting;

這種方法更加直觀,讓你清晰地看到組件的屬性。這種方式也不需要額外的泛型參數,使代碼更簡潔和易於維護。

總之,雖然 React.FC 可以使用,但使用它的代價可能過高,因此建議選擇直接定義函數組件的方式,以提高代碼的可讀性和可維護性。

連結

  • TypeScript:https://www.typescriptlang.org/

上一篇
Day 23 - Nx + Monorepo 架構下的 Micro Frontend
下一篇
Day 25 - 關於 React 的額外知識補充
系列文
前端三兩事,哪些您必須要知道的事 !30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言